當我們透過前一篇所介紹的 Heartbeat 收集資料後,接下來我們要將介紹如何透過 Kibana 的 Uptime 功能,來檢視這些資料。
進入 Kibana 的主畫面後,點選主選單,並從 Observability 的區塊,可以找到 Uptime 的進入點。
點選進入後,我們可以看到 Uptime 的主要 Dashboard,畫面蠻單純,直接列出監控的彙總結果,包含多少個 Monitors 其中有哪些目前是 Down
以及過去指定的時間區間中,Up
與 Down
的 Histogram 圖表。
在底下的監控總覽的區塊,會條列出每一項我們所設定的 Monitor,並且包含這些 Monitor 的主要狀態資訊。
點選其中一個 Monitor 之後,可以進入 ES Cluster Monitor 的頁面,如下圖。
這個 Monitor 的畫面會包含幾個重點,以上圖我的情境為例進行說明:
100.00%
、監控這組服務的 URL http://training.onedoggo.com
,監控的類型 HTTP
、有哪些 Tags onedoggo
training
web
、以及 TLS Certificate 多久之後會到期 Expires in 9 monthes
。taipei
與 tokyo
,以及這些地區各自在這段時間的可性用 (availability) 比例及最後檢查的時間。Up
或 Down
、檢查的時間、從哪個 Geo Location 執行、HTTP status,花了多少時間 (Duration)、如果有錯誤的話,錯誤的內容是什麼 (如下圖),另外如果有開啟記錄 HTTP response 的話,包含 HTTP Response Headers 與 Body 都會被詳細的記錄下來,在追查問題時很方便。Kibana Uptime 會協助我們將所有 Monitors 之中有包含 SSL/TLS 的 Certificate 彙總起來,在 TLS Certificates 這裡可以看到所有的憑證列表及狀態,這個功能很方便,可以直接一覽所有憑證的狀態。
另外也能透過 Settings 的畫面,指定 Certificate 的過期通知的期限設定。
若要使用 Elastic 替 Uptime 建立的 Dashboard,要另外到 Github (https://github.com/elastic/uptime-contrib) 下載,並且使用 Kibana > Stack Management > Saved Objects 的功能,使用 Import 將對應 Github 裡的 http_dashboard.ndjson
檔案匯入,匯入完成後,就可以到 Dashboard 選擇開啟 Heartbeat HTTP monitoring
的 Dashboard。
當有異常發生時,我們想要主動收到通知,這時就要使用到 Elastic Alert 的功能,我們首先要建立 Connector 來設定通知發送到哪邊,再透過 Uptime 進行 Alert 的設定。
這邊要注意 Alert 的功能有蠻多會是需要使用到進階的授權,不是免費的。
如果是第一次使用 Alerting 的功能,在進入 Stack Management 的 Connectors 設定中要建立 Connectors 時,會看到以下的畫面,提示我們會需要先設定好 xpack.encryptedSavedObjects.encryptionKey
。
要產生這個 EncryptionKey 可以透過 kibana-encryption-keys
的指令來協助產生,這個指令就放在 kibana 的 bin
資料夾裡面。[1]
./bin/kibana-encryption-keys generate
執行指令後,就會產生 encryption keys。
這個指令只會協助我們產生 key,我們需要將產生出來的設定,添加到 config/kibana.yml
裡面。
一但設定完成、重新啟動 kibana 之後,我們回到 Connectors 的設定頁面,就可以建立新的 Connector 了。
這邊使用 Slack Connector 為例。
請注意:要使用 Slack Connector 會需要擁有 Gold License 以上的授權。
選擇 Slack
之後,在建立 Connector 的畫面,會出現 Create a Slack Webhook URL
的連結,點選下去之後,會導到 Elastic 的官方文件,裡面有完整的設定教學,當中有提到要進入 Slack WebHook 的設定頁面 https://my.slack.com/services/new/incoming-webhook 去建立 WebHook。
指定 Alert 要通知的 Channel 之後,建立 WebHook integration,就可以拿到 WebHook URL
。
接著在 Add Connector 的地方,把這些資訊填寫完成,並且建立 Connector。
接下來,我們可以在 Uptime 設定 Default Connectors,讓之後 Uptime 有異常發生時,透過這些 Connectors 發送通知。
一但我們設定好 Alert 的 Connectors 之後,我們就可以到 Monitors 的頁面,啟動 Status alert,接下來有異常發生時,就會通知到我們指定的 Connecters 了。
如果我們想在 TLS Certificate 快要過期時收到通知,我們要在 Uptime 設定 Alert。
接著從 Slack 的畫面可以看到有發生問題、或是狀態恢復時通知的內容。
以上的介紹,是透過 Kibana 針對 Uptime 所提供的功能,讓我們能迅速的掌握系統的可用性狀態,以及能在異常時發送通知提醒,除了 Kibana Uptime 所提供的畫面之外,我們也能自己透過 Virtualize 等工具,從 Heartbeat 所記錄並存放在 Elasticsearch 裡的資料,建立我們自己想要檢視的圖表與儀表版 (Dashboard),這部份就不在這裡介紹,有興趣的可以從官方 Kibana 的說明文件參考做法。
查看最新 Elasticsearch 或是 Elastic Stack 教育訓練資訊: https://training.onedoggo.com
歡迎追蹤我的 FB 粉絲頁: 喬叔 - Elastic Stack 技術交流
不論是技術分享的文章、公開線上分享、或是實體課程資訊,都會在粉絲頁通知大家哦!